Mainframes are computing systems used mainly by large businesses and organizations for executing mission and task-critical applications (such as bulk data processing) that are often essential to the core of the business or organization. Through a combination of advanced processing abilities and specialized software applications, usage of mainframe systems is often capable of providing a competitive advantage to a business or organization. As mainframes are often critical to the success or even continuation of a business's operations, mainframes are designed for the purposes of longevity, fault tolerance, and durability.
In addition, mainframes also offer vastly increased computing performance relative to ordinary person computers. Compared to a personal computer such as a PC, mainframes will commonly have hundreds to thousands of times as much data storage, and the capability to access, manipulate, and the ability to perform operations on such data much faster. Mainframes are designed to handle very high volumes of input and output (I/O) and emphasize throughput computing. Some popular mainframe designs have included several subsidiary computers (called channels or peripheral processors) which manage the I/O devices, leaving the central processing unit (CPU) free to deal only with high-speed memory. In addition, typical mainframe applications are often used to perform tasks which are essential to the core of the business operating the mainframe.
In addition, nearly all conventional mainframes also have the ability to run (or host) multiple operating systems, and thereby operate not as a single computer but as a number of virtual machines. This is most commonly achieved through the use of multiple logical partitions. Each logical partition, commonly referred to as a “LPAR,” is a subset of a computing system's hardware resources that is virtualized as a separate computer. In this role, a single mainframe can replace dozens or even hundreds of smaller servers. As a general practice, mainframes often utilize the proprietary operating system of the mainframe's manufacturer, and conventional implementations often feature a single mainframe operating numerous instances of the same operating system. Recent developments have enabled the combination of various, disparate operating systems operating in distributed logical partitions in the same mainframe.
Unfortunately, mainframes are typically very expensive to purchase and procure. Mainframe operating systems and applications can also be very expensive to develop and/or license. Due to the relatively small number of mainframe manufacturers and software developers, mainframe consumers typically have few options beyond a mainframe manufacturer's proprietary operating system. Naturally, reliance on a single, proprietary operating system can be expensive and licensing fees for the proprietary operating system can contribute significantly to the cost of owning and operating a mainframe, as well as purchasing mainframe computing services. Moreover, these fees are almost certain to continue to increase for a mainframe consumer over a mainframe's lifetime due to maintenance and upgrade fees.
An alternative to actual ownership of mainframes is to rent mainframe computing services from a mainframe service provider. However, a service purchasing arrangement with these providers (which can be the mainframe manufacturers themselves) can often be just as expensive over time. Limiting the cost of mainframe ownership and operation has been difficult to achieve, historically. Purchasing additional third party software is one approach to limiting the cost (e.g., eliminating the cost of developing proprietary software). However, this approach also eliminates the competitive advantages of developing proprietary applications. This approach also requires additional licensing fees and may not substantially reduce the cost of operation and/or ownership.
The programming language COBOL (abbreviation of Common Business-Oriented Language) is popular in the development of many business, administrative, and accounting applications and software systems for mainframe computing systems. Unfortunately, due to a lack of conditional compiling functionality native to the language, the COBOL language is not particularly well suited to multi-operating system execution. As a result, multiple versions may be separately developed for any single application or software system to be compliant with, and executable on, disparate operating systems. This is true even if, at least initially, only minor deviations are required between each platform-specific version. The problem is further exacerbated as development continues independently since divergence may increase with subsequent updates. After a number of iterations and developmental cycles, the same application may be substantially different for multiple platforms, potentially increasing the complexity of simultaneously developing the application for each platform drastically.